var loaderUtils = require("loader-utils");
var mime = require("mime");
var validate = require("schema-utils");
var schema = require('./option.json');
function shouldTransform(limit, size){
    if (typeof limit === 'boolean') {
        return limit;
    }
    if (typeof limit === 'string') {
        return size <= parseInt(limit, 10);
    }
    if (typeof limit === 'number') {
        return size <= limit;
    }
    return true;
}
module.exports = function(content) {
    // 1. 获取参数
    var query = loaderUtils.getOptions(this) || {};
    // 2. 验证参数 - 当出现错误的时候会自动抛出错误
    validate(schema, query,{name:'url-loader'});
    // 3. 文件大小限制
    var limit = (this.options && this.options.url && this.options.url.dataUrlLimit) || 0;
    // 2.0+版本以后新增的esModuleApi
    let esModule = query.esModule
    // 类型
    var mimetype = query.mimetype || query.minetype || mime.lookup(this.resourcePath);
    // 通过文件大小
    if(shouldTransform(query.limit,content.length)){
        // 如果比较文件小于limit 以base64的形式去展示
        return `${esModule ? 'export default' : 'module.exports ='}` + JSON.stringify("data:" + (mimetype ? mimetype + ";" : "") + "base64," + content.toString("base64"));
    } else {
        // 这里引入我们自己的file-loader
        // 如果比较文件大于limit，以url的形式展示
        var fileLoader = require("./file-loader.js");
        return fileLoader.call(this, content);
    }
}
module.exports.raw = true;
